#ifndef SSignal3_H
#define SSignal3_H
#include "Global_Signal.h"
#include "abstractSignal.h"

template <class T, class U, class V>
class sSignal3 : public AbstractSignal
{
        public :

        /*************************************************************/
        /*					Propriétés	     */
        /*************************************************************/

        int (*pSignal)(T,U);    /*!< Pointeur de la fonction signal 	*/
        T arg1;
        U arg2;
        V arg3;

        /*************************************************************/
        /*                  Constructeur                             */
        /*************************************************************/

        sSignal3(int (*apSignal)(T, U, V), T arg, U aArg2, V aArg3);

        /*************************************************************/
        /*					Méthodes	  */
        /*************************************************************/

        void Update();


};

template <class T, class U, class V>
sSignal3<T,U,V>::sSignal3(int (*apSignal)(T, U, V), T arg, U aArg2, V aArg3) :
    pSignal(apSignal),arg1(arg), arg2(aArg2), arg3(aArg3)
{}

template <class T, class U, class V>
void sSignal3<T,U,V>::Update()
{
        if((*pSignal)(arg1, arg2, arg3))
        {
                Run();
        }
}

#endif // SSignal3_H
